<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        'use strict'

        // 1. 必须用 var 声明变量，不允许使用未声明的变量
        // var a = 123;
        // console.log();


        // 2. 禁止自定义的函数中的 this 指向 window
        // function fn(){
        //     console.log(this);
        // }

        // fn()

        // window.fn();

        // 3. 创建 eval 作用域
        // var str = 'var n = 456; console.log(n)';

        // // str
        // eval(str)

        // console.log(n);

        // 4. 对象不能有重名的属性（Chrome 已经修复了这个 Bug，IE 还会出现）
        // var obj = {
        //     name:'老王',
        //     name:"laowang"
        // }
            
        // console.log(obj);

        //5. 函数不能有重复的形参
        //  Duplicate parameter name not allowed in this context
        // function fn(a,a){
        //     console.log(a,a);
        // }

        // fn(1,2)

        // 6. 新增一些保留字, 如: implements interface private protected public
        // Unexpected strict mode reserved word
        // var interface = '123';

        // console.log(interface);

        // 7. 使用call、apply传第一个参数为null或undefined时，this值不会跳转到全局对象

        // function fn(a,b){
        //     console.log(this);
        //     console.log(a+b);
        // }

        // var obj = {
        //     name:"老王"
        // };

        // fn.call(obj)

        // fn.apply(obj,[])

        // fn.bind(obj,1,2)()

        // fn.call();

        // fn.apply();




    </script>

    
</body>


</html>

